def calculate_order_size(atr_value, atr_multiplier, price, balance, risk_percentage):
    """
    计算交易下单数量。

    参数:
    atr_value (float): ATR指标的当前值。
    atr_multiplier (float): ATR的倍数，用于计算止损距离。
    price (float): 标的资产的当前价格。
    balance (float): 您的总交易余额。
    risk_percentage (float): 您愿意在单笔交易中承担的最大风险占总权益的百分比 (例如，输入2表示2%)。

    返回:
    dict: 一个包含计算结果的字典。
    """

    # 1. 计算止损距离
    stop_loss_distance = atr_value * atr_multiplier

    # 2. 计算基于风险的下单数量
    # 计算愿意承担的风险金额
    risk_amount = balance * (risk_percentage / 100)
    # 基于风险计算的下单数量
    # 确保止损距离不为零以避免除零错误
    if stop_loss_distance > 0:
        risk_based_quantity = risk_amount / stop_loss_distance
    else:
        risk_based_quantity = float('inf')  # 如果止损距离为0，则理论上可以下无限多

    # 3. 计算全部余额可以购买的数量
    # 确保价格不为零
    if price > 0:
        full_balance_quantity = balance / price
    else:
        full_balance_quantity = float('inf')

    return {
        "止损距离": stop_loss_distance,
        "单笔最大风险金额": risk_amount,
        "基于风险的建议下单数量": risk_based_quantity,
        "全仓下单数量": full_balance_quantity
    }

# --- 程序主入口 ---
if __name__ == "__main__":
    # --- 请在这里输入您的参数 ---
    ATR_VALUE = 48.085  # 例如，ATR值为2.5
    ATR_MULTIPLIER = 2.0  # 例如，使用2倍的ATR作为止损
    UNDERLYING_PRICE = 4281.57  # 例如，当前股票价格为150
    ACCOUNT_BALANCE = 200.0  # 例如，您的总余额为10000
    MAX_RISK_PERCENTAGE = 1.0  # 例如，您愿意承担的最大风险为总权益的2%

    # 调用函数进行计算
    results = calculate_order_size(ATR_VALUE, ATR_MULTIPLIER, UNDERLYING_PRICE, ACCOUNT_BALANCE, MAX_RISK_PERCENTAGE)

    # --- 打印结果 ---
    print("--- 交易计算结果 ---")
    print(f"输入参数:")
    print(f"  - ATR 值: {ATR_VALUE}")
    print(f"  - ATR 倍数: {ATR_MULTIPLIER}")
    print(f"  - 标的价格: {UNDERLYING_PRICE}")
    print(f"  - 账户余额: {ACCOUNT_BALANCE}")
    print(f"  - 单笔最大风险百分比: {MAX_RISK_PERCENTAGE}%\n")

    print(f"计算详情:")
    print(f"  - 止损距离 (ATR * 倍数): {results['止损距离']:.2f}")
    print(f"  - 本次交易最大可承受亏损: {results['单笔最大风险金额']:.2f}\n")

    print("--- 建议下单数量 ---")
    print(f"基于风险计算的下单数量: {results['基于风险的建议下单数量']:.4f}")
    print(f"全仓可购买的数量 (用于对比): {results['全仓下单数量']:.4f}")
    print("--------------------")